<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;
use App\Http\Requests\TopicPostRequest;

class TopicController extends Controller
{	
    //话题管理主页
    public function getIndex(Request $request)
    {	
    	//每页显示多少条
    	$num = $request->input('num',5);
    	
    	//判断
    	if($request->input('keyword'))
    	{
    		$contents = DB::table('topic')
    			->where('title','like','%'.$request->input('keyword').'%')
    			->paginate($num);
    	}else{
    	//查询数据
    	$contents = DB::table('topic')->paginate($num);

    }
    	//获取所有参数
    	$all = $request->all();
    	 //解析模板
        return view('admin.topic.index',['contents'=>$contents,'all'=>$all]);
    }

    //头像上传
   static public function upload($request)
    {
        //判断文件是否上传
        if($request->hasFile('pic')){
            //随机文件名
            $name = md5(time()+rand(66666,99999));
            //获取文件的后缀名
            $suffix = $request->file('pic')->getClientOriginalExtension();
            $arr = ['png','jpeg','jpg','gif'];
            if(!in_array($suffix,$arr)){
                return back()->with('error','上传格式不正确');
            }

            $request->file('pic')->move('./uploads/',$name.'.'.$suffix);
            //返回路劲信息
            return '/uploads/'.$name.'.'.$suffix;
        }
    }

    //添加话题
    public function getAdd()
    {
    	return view('/admin.topic.add');
    }

    //执行话题的添加
    public function postInsert(Request $request)
    {	
    	//获取全部数据信息
    	// $data = $request->all();
    	$data = $request->except(['_token']);

    	//调用方法进行头像上传
    	$data['pic'] = self::upload($request);

        // 内置验证(laravel自带的) 数据少时可以用它,多的时候用类(自动验证)
        $this->validate($request,[
            'title' => 'required|max:255',
            'content' =>'required',
            'pic' =>'required',
            ],[
                'title.required'=>'话题必须填写',
                'title.max'=>'话题内容最大255字符',

                'content.required'=>'描述必须填写',
                'content.max'=>'描述内容最大255字符',

                'pic.required'=>'图片必须添加',
                
            ]);


    	//下一步执行数据库的添加(在这之前要先配置环境文件  .env文件)
        $res = DB::table('topic')->insertGetId($data);

        //跳转到列表页(重定向)redirced 他默认是get请求  withInput()闪存信息,一次性使用
        if($res){
            return redirect('/admin/topic/index');
        }else{
            return back()->withInput();
        }
    }

       //删除操作
    public function getDel(request $request)
    {
        
       //接受数据
        $id = $request->input('id');

        //执行删除
        $res = DB::table('topic')->where('id','=',$id)->delete();

        if($res){
            return redirect('admin/topic/index')->with('success','用户删除成功');
        }else{
            return redirect('admin/topic/index')->with('error','用户删除失败');
        }
    }

       //修改操作
    public function getUpdate(Request $request)
    {  
        //接受数据
        $id = $request->input('id');
        // dd($id);

        $res = DB::table('topic')->where('id',$id)->get();

        return view('admin.topic.update',['res'=>$res]);

        
    }
    //修改后插入
    public function postUpdate(Request $request)
    {   
    	//接收id
    	$id = $request->input('id');

        //提取数据
        $data = $request->except(['_token']);
        // dd($data);
        //调用方法进行头像上传
    	$data['pic'] = self::upload($request);

        //执行数据添加
        $res = DB::table('topic')
            ->where('id', $id)
            ->update($data);

        //判断
        if($res){
            return redirect('admin/topic/index')->with('success','修改成功');
        }else{
            return back()->withInput()->with('error','修改失败');
        }

    }
}
